/**
 * 状态类型枚举
 * @author xulh
 * @since 2024/03/11
 */
export class StatusEnum {
  static ENABLE: BaseEnum = { value: 1, label: '启用' };
  static DISABLE: BaseEnum = { value: 0, label: '禁用' };

  value: number;
  label: string;

  MenuTypeEnum(value: number, label: string) {
    this.value = value;
    this.label = label;
  }

  // 静态方法，根据 label 获取 value 值
  static getValueByLabel(label: string): number | undefined {
    // 遍历 GenderEnum 类的所有静态属性
    for (const key in StatusEnum) {
      if (StatusEnum.hasOwnProperty(key)) {
        const enumValue = StatusEnum[key] as BaseEnum;
        if (enumValue.label === label) {
          return enumValue.value;
        }
      }
    }
    return undefined; // 如果没有找到匹配的 label，则返回 undefined
  }

  // 静态方法，根据 value 获取 label 值
  static getLabelByValue(value: number): string | undefined {
    // 遍历 GenderEnum 类的所有静态属性
    for (const key in StatusEnum) {
      if (StatusEnum.hasOwnProperty(key)) {
        const enumValue = StatusEnum[key] as BaseEnum;
        if (enumValue.value === value) {
          return enumValue.label;
        }
      }
    }
    return undefined; // 如果没有找到匹配的 label，则返回 undefined
  }
}
